package com.cbg.archives.service;

import com.cbg.archives.dto.ArchivesModularDTO;
import com.cbg.archives.dto.EsArchivesDTO;
import com.cbg.archives.vo.ArchivesVO;
import com.cbg.archives.vo.ModularVO;
import com.cbg.dto.SelectedColListDTO;
import com.cbg.vo.DirectionsVO;

import java.util.List;

/**
 * 个人档案service
 *
 * @author wangjuzheng
 * @date 2019-10-24
 **/
public interface IArchivesService {

    /**
     * 全景通查分类和表树的初始化
     *
     * @return 初始化信息
     */
    List<EsArchivesDTO> getArchivesList();

    /**
     * 分类位置的移动
     *
     * @param directionsVO 移动VO
     */
    void updateArchivesDirections(DirectionsVO directionsVO);

    /**
     * 修改分类名称
     *
     * @param archivesId 分类id
     * @param name       名称
     * @return 修改后的分类信息
     */
    EsArchivesDTO updateArchivesName(Long archivesId, String name);

    /**
     * 分类的删除
     *
     * @param archivesId 分类id
     */
    void deleteArchives(Long archivesId);


    /**
     * 分类的添加
     *
     * @param archivesVO 分类VO
     * @return 分类添加的信息
     */
    EsArchivesDTO addArchives(ArchivesVO archivesVO);

    /**
     * 根据分类id获取模块信息
     *
     * @param archivesId 模块id
     * @return 分类下的模块信息
     */
    List<ArchivesModularDTO> getModular(Long archivesId);

    /**
     * 添加模块
     *
     * @param modularVO 模块参数DTO
     */
    void addModular(ModularVO modularVO);

    /**
     * 模块位置的移动
     *
     * @param archivesId    分类id
     * @param modularId     模块id
     * @param directionType 移动方向区分(1左移 2右移)
     */
    void updateModularDirections(Long archivesId, Long modularId, Integer directionType);

    /**
     * 模块的删除
     *
     * @param archivesModularId 模块id
     */
    void deleteModular(Long archivesModularId);

    /**
     * 模块的更新
     *
     * @param modularVO 模块参数
     */
    void updateModular(ModularVO modularVO);

    /**
     * 根据模块id和表id获取列信息
     *
     * @param modularId 模块id
     * @param tableId   表id
     * @return 列信息
     */
    List<SelectedColListDTO> selectedModular(Long modularId, Long tableId);

}
